<?php
namespace app\xdk\home;
use app\xdk\home\Base;
use app\xdk\model\Plan as PlanModel;
use app\xdk\model\Tags;
//use app\demo\model\Post; 不重名就不需要重命名
class Plan extends Base {
    // 获取列表
    public function index($row=10){
        // 查询字段
        $map = $this->getMap();
        $Post = new TempModel();
        // 自定义where查询
        $map['type']='skill';
        $data =  $Post
            ->order('id desc')
            ->where($map)
            ->paginate($row)
            ->each(function($item){
                //对item增加额外字段
                $item['diy'] = 'diy';
                return $item;
            });
        $data = $data->toArray();
        // 增加额外数据
        $data['cate']  = $Post::column('skill_cate');
        foreach ($data['cate'] as $key=> &$item){
            if($item==null) unset($data['cate'][$key]);
        }
        return json($data);
    }
    // 保存内容
    public function save(){
        $body = request()->only(['title','is_public','is_free','tags']);
        // 验证
        $res =  $this->validate($body,'Plan');
        if($res!==true) return mogo_error($res);
        $Plan = new PlanModel();
         //string
        $tags = explode(',',$body['tags']);

        // 校验标签
        foreach ($tags as $key=>&$tag){
            if(!Tags::get($tag)){
                unset($tags[$key]);
            };
        }

        if(count($tags)<=0) return json(['error'=>'标签数量至少一个'],404);


        // 1.表 2.传id数组   checkExist([],'dp_xdk_tags');
        // 包容性  不报错 没有就去掉

//        halt($tags);
        // 标签处理
        $plan = $Plan::create($body);  //plan_id
        $plan->Tags()->attach($tags,['create_time'=>time()]);
//        $plan->Tags()->detach([2]);
        return json($res);
    }
    // 读取内容
    public function read($id){
        $data = TempModel::get($id);
        // 第一步 验存
        if(!$data) return mogo_error('帖子不存在');
        // 这里可以做一些处理
        return json($data);
    }
    // 删除内容
    public function delete($id){
        $data = TempModel::get($id);
        // 第一步 验存
        if(!$data) return mogo_error('帖子不存在');
        // 第二部 验证权限
        // 第三部 返回处理结果,便于调试
        $res=[
           'result'=> $data->delete(),
        ];
        return json($res);
    }


    public function comments($id){
        $body = request()->only(['content']);
        $plan = PlanModel::get($id);
        if(!$plan) return mogo_error('资源不存在');
        $res = $plan->Comments()->save([
            'content'=>$body['content']
        ]);
        return json($res);

    }

    public function fav($id){
        $plan = PlanModel::get($id);
        if(!$plan) return mogo_error('资源不存在');
        if($plan->checkIsFav()){
            // 取消点赞
           $res =   $plan->cancelFav();
        }else{
            // 点赞
            $res = $plan->addFav();
        }
        return json([
            'fav_result'=>$res
        ]);
    }
}